Set up X11 authorization when a VMX domain uses SDL.
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Wed, 28 Dec 2005 14:14:23 +0000 (15:14 +0100)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Wed, 28 Dec 2005 14:14:23 +0000 (15:14 +0100)
Signed-off-by: Hiromichi Itou <ito@begi.net>
tools/python/xen/xend/image.py
tools/python/xen/xm/create.py

index 5fe114a59d053268c1bcde135cedbcc3c527f9d1..b8ebc7a2aa19d9dbe853681fe75981f632101a1d 100644 (file)
@@ -194,6 +194,7 @@ class VmxImageHandler(ImageHandler):
         if not self.device_model:
             raise VmError("vmx: missing device model")
         self.display = sxp.child_value(imageConfig, 'display')
+        self.xauthority = sxp.child_value(imageConfig, 'xauthority')
 
         self.vm.storeVm(("image/dmargs", " ".join(self.dmargs)),
                         ("image/device-model", self.device_model),
@@ -340,6 +341,8 @@ class VmxImageHandler(ImageHandler):
         env = dict(os.environ)
         if self.display:
             env['DISPLAY'] = self.display
+        if self.xauthority:
+            env['XAUTHORITY'] = self.xauthority
         log.info("spawning device models: %s %s", self.device_model, args)
         self.pid = os.spawnve(os.P_NOWAIT, self.device_model, args, env)
         log.info("device model pid: %d", self.pid)
index 8d4c0f9cd38975574f82ea5bdbaae8a20e3f6aeb..58e278e6cd9e627a920db7c009a62ea16d26c776 100644 (file)
@@ -388,6 +388,10 @@ gopts.var('display', val='DISPLAY',
           fn=set_value, default=None,
           use="X11 display to use")
 
+gopts.var('xauthority', val='XAUTHORITY',
+          fn=set_value, default=None,
+          use="X11 Authority to use")
+
 
 def err(msg):
     """Print an error to stderr and exit.
@@ -526,7 +530,8 @@ def configure_vmx(config_image, vals):
     """
     args = [ 'device_model', 'vcpus', 'cdrom', 'boot', 'fda', 'fdb',
              'localtime', 'serial', 'stdvga', 'isa', 'nographic', 'audio',
-             'vnc', 'vncviewer', 'sdl', 'display', 'ne2000', 'lapic']
+             'vnc', 'vncviewer', 'sdl', 'display', 'ne2000', 'lapic',
+             'xauthority' ]
     for a in args:
         if (vals.__dict__[a]):
             config_image.append([a, vals.__dict__[a]])
@@ -801,6 +806,9 @@ def parseCommandLine(argv):
     if not gopts.vals.display:
         gopts.vals.display = os.getenv("DISPLAY")
 
+    if not gopts.vals.xauthority:
+        gopts.vals.xauthority = os.getenv("XAUTHORITY")
+
     # Process remaining args as config variables.
     for arg in args:
         if '=' in arg: